1. The Field of the Invention
The present invention relates to systems and methods for replication and synchronization of data or resources between servers and client. More specifically, the present invention relates to systems and methods for detecting and resolving conflicts as resources are replicated between servers and clients.
2. The Prior State of the Art
Technology is increasing and expanding at an incredible rate and is permitting computers to be integrated into many different facets of people's lives. People are able to use computers to expand the confines of their own hard drive. Instead of simply performing tasks such as word processing and being limited to the information that can be locally stored, people are increasingly connected to networks which expand the amount of information that is available to them.
The information available across a network, including the Internet, can be downloaded quickly. More importantly, the data or information can be downloaded as needed. For example, many businesses have implemented a network where documents and other resources are stored on a server that is accessible by all clients instead of storing all of a business's documents and resources on each local hard drive. Clients are able to access only the resources that they require from the server. After the resource has been modified or used, it is restored on the server and is available for another client. In some instances, the same document can be accessed by more than one client simultaneously. A significant drawback of this arrangement is that the resource must be downloaded every time the client needs to work with the resource.
The internet, local area networks, intranets and business computer networks are becoming more sophisticated and complex which enables businesses and individuals to share information more quickly and easily. Interoffice email and calendaring applications are becoming a necessity as networks become an integral part of business. Never before has so much information been readily available and accessible by individuals and businesses.
This ability to access and share data has led to some rather unexpected problems. For instance, it is difficult to work on a network resource when a person or client is not connected to the network. Even if the resource is downloaded before the client goes offline, the client is not assured of working on the most recent version of the data or resource. In fact, the client may overwrite the changes of another client when the changed resource is uploaded to a server. However, the ability to access network resources while offline is a pressing need in today's age of portable computers.
Another problem is related to the amount of network traffic as the clients connected to a network download resources, upload resources, transmit email, read email and utilize calendar applications and use the resources of a computer network. In fact, the speed of a network can be significantly impaired by the amount of traffic or data that is being transmitted over the network. In a system having more than one server, these problems are partially solved by having server-to-server data replication to insure that each server has the most recent version of a resource. This is much more difficult to perform with client, because they are not always connected to the network and are not easily accessible by other clients.
Replication, however, has the potential to reduce network traffic and make clients more efficient, but there are several problems related to server to client replication. One issue to be addressed is minimizing the transfer of resources over the network while ensuring that the client has the most up to date version of a resource. Another issue to be addressed is related to the conflicts which may exist between the resources stored on the clients and the resources stored on the servers.
Conflicts between a client copy of a resource and a server copy of a resource can occur because multiple copies of a particular resource can reside on multiple servers and multiple clients. A simple example of this conflict is where two clients have downloaded a resource from a server. The first client deletes a portion of the resource and uploads the altered resource to the server. The second client adds a different portion to the resource, but does not delete the portion deleted by the first client. The second client then uploads the changed resource to the server. In this scenario, the portion deleted by the first client is in effect restored because the version of the first client was overwritten by the changes made by the second client. Conflicts present a difficult problem.
One solution to this problem is to only allow a single client to download a particular resource. While this solution prevents conflicts between multiple copies of a resource, the ability to share data and work collaboratively with a resource is severely hampered. Another solution to the conflict problem is to initiate an arbitration process between the entities involved in the conflict. While this solution may resolve the conflict, the process produces a significant amount of network traffic and may require the interaction of an end user, both of which lower the efficiency of the network and the users. This problem is magnified when multiple servers and clients are involved in the arbitration process.
Because of the eventuality of a conflict between the copies of resources on clients and the copies of resources on the servers, it is desirable and would be an advance in the art to be able to detect and resolve conflicts. It would also be an advance in the art to minimize the amount of network traffic needed to resolve the conflict.